Printing apparatus

ABSTRACT

A printing apparatus includes a print engine and a first controller configured to generate a raster data from a print job and cause the print engine to perform a print process based on the raster data. The first controller includes a first core and a second core. The first core is configured perform an analyzing process of analyze a job control command included in the print job and the second core is configured to perform an RIP process of generating the raster data from a PDL command.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application claims priority under 35 U.S.C. § 119 from JapanesePatent Application No. 2020-158177 filed on Sep. 23, 2020. The entiresubject matter of the application is incorporated herein by reference.

BACKGROUND Technical Field

The present disclosures relate to a technology of printing images basedon a print job.

Related Art

There has been known a printing apparatus equipped with a print engineand a controller configured to cause the print engine to perform aprinting process. Generally, the controller analyzes PDL (abbreviationfor Page Description Language) commands included in a print job andgenerates raster data. Based on the thus generated raster data, thecontroller causes the print engine to print an image on a print medium.

The print job contains, in addition to the PDL command, job controlcommands, which represent information for controlling the print job. Thecontroller generally analyzes the job control commands and generates theraster data based on the PDL commands in accordance with the analysisresults of the job control commands.

SUMMARY

In recent years, there have been increasing demands on printingapparatuses. For example, there is a need to reduce the time required tocomplete a printing process after receiving an instruction from aterminal to perform the printing process. On the other hand, thefunctions required of printing apparatuses are becoming more diverse,and the amount of data in print jobs is increasing in order to realizethe required functions. As a result, there is a concern that theprocessing load on the controller will increase in the printing process.

According to aspects of the present disclosures, there is provided aprinting apparatus, comprising a print engine, and a controller. Thecontroller is configured to generate raster data based on a print joband control the print engine to perform printing based on the generatedraster data, the print job being data containing a job control commandand a PDL command, the job control command being a command to controlthe print job, a PDL command being a command to generate the rasterdata. The controller comprises a first core which is a processor coreconfigured to perform, in the printing, an analyzing process, theanalyzing process being a process to analyzing the job control commandcontained in the print job, and a second core which is another processorcore configured to perform a RIP process, the RIP process being aprocess of generating the raster data based on the PDL command.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a block diagram showing a configuration of a printing systemaccording to an embodiment of the present disclosures.

FIG. 2 shows an example of a print job.

FIG. 3 shows procedures performed by a first core of a first controller.

FIG. 4 is a flowchart illustrating a job analyzing process performed bythe first core.

FIG. 5 is a flowchart illustrating a process performed by a second coreof the first controller.

FIG. 6 is a flowchart illustrating a RIP process performed by the secondcore.

FIG. 7 is a flowchart illustrating a job analyzing process according toa second embodiment.

FIG. 8 is a flowchart illustrating a process performed in the jobanalyzing process shown in FIG. 7.

DETAILED DESCRIPTION OF THE EMBODIMENTS First Embodiment

A printing system 100 shown in FIG. 1 is equipped with a printingapparatus 10 and a terminal 30. The printing apparatus 10 and theterminal 30 are connected to a network 200 and are configured tocommunicate through the network 200. The network 200 may be theInternet, a LAN, or a combination of a LAN and the Internet. Inaddition, the network 200 may be a wired network, a wireless network, ora combination of the wired and wireless networks. According to aspecific embodiment, the printing apparatus 10 and the terminal 30 areconnected wirelessly to a router (not-shown) that forms a part of thenetwork.

The printing apparatus 10 is equipped with a first controller 11, asecond controller 12, a third controller 13, a memory 14, acommunication IF 15, a user IF 16, a print engine 17, and a bus 19. Itis noted that “IF” is an abbreviation for “interface.”

The communication IF 15 connects the printing apparatus 10 to thenetwork 200 in accordance with a particular communication protocol. Theuser IF 16 is an interface between the printing apparatus 10 and a userwho directly operates the printing apparatus 10. The user IF 16includes, for example, a touch panel or operation keys.

The print engine 17 executes a printing process to print images onrecording media such as sheets or disks. In this embodiment, a printingmethod of the print engine 17 can be an inkjet printing method, anelectrophotographic imaging method, or the like. The print engine 17 hasan image forming mechanism configured to print the recording agent onthe recording medium, and a conveyance mechanism configured to conveythe recording medium to the image forming mechanism. The image formingmechanism has a cartridge that contains the recording agent. Thecartridge has an IC chip, which can be used to communicate with thethird controller 13 for authentication of the cartridge and notificationof a remaining amount of recording agent. The conveyance mechanism has asheet feed roller that feeds the recording media and a conveying rollerthat conveys the recording medium to the image forming mechanism.

The first controller 11 generates raster data based on the print job JDwhen causing the print engine 17 to perform the printing process. Thefirst controller 11 is a multi-core CPU having a first core 20 and asecond core 21 as processor cores. The first core 20 and the second core21 are configured to communicate with each other by a well-known methodsuch as an MCAPI (abbreviation of “Multi-core Communications API”). Inthis embodiment, a clock frequency of the second core 21 is higher thana clock frequency of the first core 20, and the second core 21 canperform a process with a higher load than a process than the first core20 can perform.

The first controller 11 is configured to make the second core 21transition between two operation modes, that is, an operating mode and asleep mode. The sleep mode is an operation mode in which powerconsumption is lower than the operating mode. When the second core 21 isnot operated, the first controller 11 can reduce the power consumptionof the first controller 11 by shifting the second core 21 from theoperating mode to the sleep mode.

Each of the second controller 12 and third controller 13 has a singleprocessor core and is configured, for example, by a single-core CPU. Thesecond controller 12 and the third controller 13 perform processes otherthan that designed to be performed by the first controller 11. Forexample, the second controller 12 causes the print engine 17 to executea feeding operation by controlling the rotation drive of the rollersthat the conveyance mechanism has when the print engine 17 executes aprinting process. Further, the second controller 12 controls the driveof each part of the image forming mechanism during the printing process.The third controller 13 controls a communication with the IC chip thatthe cartridge has and blinking of an LED (not shown).

Each of the processes executed by the second and third controllers 12and 13 has a lower processing load than the process executed by thefirst controller 11. In other words, the first controller 11 is acontroller configured to perform processes with a higher processing loadthan the second and third controllers 12 and 13 can perform.

The memory 14 is configured by a combination of a RAM, a ROM, an SSD, anHDD, and the like. The buffers provided to the first to thirdcontrollers 11 to 13, which are used when various programs are executed,may also be regarded as part of the memory 14. The memory 14 may be astorage medium that can be read by the first to third controllers 11 to13. A storage medium readable by any of the first to third controllers11 to 13 is a non-transitory medium. In addition to the above examples,the non-transitory media also include recording media such as CD-ROMs,DVDs, and ROMs. The non-transitory medium is also a tangible medium. Onthe other hand, an electrical signal carrying a program downloaded froma server or the like on a network 200 is a computer-readable signalmedium, which is a type of computer-readable medium, but is not includedin the non-transitory computer-readable storage medium.

This embodiment mainly shows the processes of the first controller 11according to the instructions described in the program. It is noted thatthe processes of “determining,” “extracting,” “selecting,”“calculating,” “deciding,” “identifying,” “obtaining,” “receiving,”“controlling,” and the like in the following description represent theprocesses of the first controller 11. It is noted that “obtaining” isused in a concept that does not require a request. In other words, theprocess of receiving data without a request by the first controller 11is also included in the concept of “obtaining” data by the firstcontroller 11. Further, “data” in this specification is represented by abit string that can be read by the controller. Further, data with thesame substantive meaning content but different formats will be treatedas the same data. The same applies to “information” in thisspecification.

The memory 14 is provided with a data storage area. The data storagearea is an area for storing data necessary for the execution ofprograms, and the like. When printing is performed, the data storagearea of the memory 14 stores the print job JD transmitted from theterminal 30. As shown in FIG. 2, the print job JD has a header area H, abody area B, and a footer area F in order from the top. The header areaH and the footer area F are the areas where the job control commands tocontrol the print job JD are recorded. In the print job JD shown in FIG.2, the job control commands are written in the PJL (abbreviation forPrinter Job Language). The body area B is the area where the PDL commandfor drawing a page is recorded.

The terminal 30 is equipped with a not-shown CPU, a memory, a user IF, adisplay, and a network IF. The memory of the terminal 30 stores the OSand a printer driver. The printer driver is configured to generate aprint job JD based on image data generated by a not-shown application inresponse to an operation instruction from the user.

Next, the procedure of the first controller 11 when performing theprinting process will be explained with reference to the drawings. FIGS.3 and 4 are processes executed by the first core 20. In FIG. 3,functions realized by the first core 20 are indicated as an analyzer 22,a job manager 23, a parameter constructor 24, and a print controller 25.The first controller 11 realizes the functions of each of the sections22, 23, 24 and 25 by executing not-shown programs stored in the memory14.

In S10 of FIG. 3, the analyzer 22 determines whether or not a print jobJD transmitted from the terminal 30 has been received. When receivingthe print job JD, the analyzer 22 proceeds to S11, analyzes the PJL andPDL commands included in the received print job JD, and notifiesanalysis results to the second core 21. When the analyzer 22 does notreceive the print job JD (S10: NO), the analyzer 22 waits (i.e., repeatsS10).

FIG. 4 shows a flowchart illustrating the job analyzing processperformed by the analyzer 22 in S11 of FIG. 3. In S30, the analyzer 22determines the type of the job control command contained in the printjob JD. Concretely, the analyzer 22 determines the type of the jobcontrol command by analyzing the header area H in the print job JD. In acase of the print job JD shown in FIG. 2, since the tag “@PJL” isincluded at the beginning of the command, the analyzer 22 determinesthat the job control command is the PJL command, and proceeds to S32.When the header area H is not included at the beginning of the print jobJD transmitted from the terminal 30, the analyzer 22 is unable todetermine the type of the job command, makes a negative decision (S31:NO) and proceeds to S39. For example, when the print job JD sent fromthe terminal 30 consists only of the PDL commands, the head of the printjob JD does not contain the header area H.

When the job control command is the PJL command (S31: YES), the analyzer22 proceed to S32 to determine whether or not the command at the end ofthe print job JD has been detected. When S32 is executed first time,since the analysis of the print job JD has not been reached to the endof the print job JD, the analyzer 22 makes a negative decision (S31:NO), and proceeds to S33.

In S33, the analyzer 22 analyzes the command specified by a read pointerin the print job JD. The read pointer is a variable that specifies theaddress on the memory 14 of the command to be analyzed. In the analysisof the header area H of the print job JD, the PJL command specified bythe read pointer is analyzed, and parameters contained in the PJLcommand are temporarily stored in the memory 14. The PJL commandcontains parameters indicating identification information, print settinginformation, and an emulation type. In this embodiment, the processperformed by the first core 20 at S33 is an example of the analyzingprocess.

The identification information includes a device name, which isinformation that identifies the printing apparatus 10, and a login username, which is information that identifies the user of the terminal 30.The print setting information is information specified when a print jobJD is generated by the printer driver, and includes the name of theprint job JD, the date and time of generation of the print job JD, aconfidential print, a color type (e.g., full color, monochrome), aresolution, a brightness, a character code type of the characters to beprinted, and a designation of the eject tray. The emulation type is, forexample, PostScript, PCL (abbreviation for Printer Control Language), orRTIFF. In the print job JD shown in FIG. 2, the PJL command of “@PJLENTER LANGUAGE=PCLXL” is included in the header area H. Accordingly,from this command, it is determined that the emulation type is “PCLXL.”In this embodiment, the emulation type is an example of a type of aprint job.

In S34, the analyzer 22 updates the read pointer from the valuespecifying the current command to the value specifying the next commandin the memory 14. In S35, the analyzer 22 determines whether a command“@PJL ENTER LANGUAGE PCLXL” indicating the end of the header area H hasbeen detected by the analysis of S33. When the analyzer 22 makes anegative decision (S35: NO), the analyzer 22 returns to S32.

As the analyzer 22 makes the negative decisions in S35 and S32, andsequentially executes the processes of S33 and S34, the locationspecified by the read pointer reaches the command “@PJL ENTER LANGUAGEPCLXL” located at the end of the header area H. Therefore, the analyzer22 makes the affirmative decision (S35: YES), and proceeds to S36. Whenthe analyzer 22 makes the affirmative decision in S35, the read pointerafter the update in S34 is the value indicating the command at thebeginning of body area B.

In S36, the analyzer 22 notifies the second core 21 of the RIP parameteranalyzed in S33. The RIP parameter is a parameter, among the parametersanalyzed from the header area H that is used in the RIP process.Concretely, the analyzer 22 requests the parameter constructor 24 forthe RIP parameter. As shown in FIG. 3, when the parameter constructor 24receives the request for the RIP parameter from the analyzer 22, theanalyzer 22 makes an affirmative decision (S20: YES) and proceeds toS21. When an auto-emulation, which will be described later, isperformed, a request for the RIP parameter is made from the second core21 (see S60 in FIG. 5). When the parameter constructor 24 does notreceive a request for the RIP parameter (S20: NO), the parameterconstructor 24 pauses.

In S21, the parameter constructor 24 retrieves common parameters fromthe memory 14 among the parameters stored in the memory 14. The commonparameters are parameters, among the RIP parameters, that are commonregardless of the emulation type. In S22, intrinsic parameters areretrieved from the memory 14. The intrinsic parameters are parameters,among the RIP parameters, that correspond to the emulation types,respectively. In S23, the common parameters and the intrinsic parametersretrieved from the memory 14 in S21 and S22 are notified to the secondcore 21.

Returning to FIG. 4, the analyzer 22 notifies the value of the currentread pointer, that is, the value indicating the top PDL command of thebody area B, to the second core 21. In S38, in accordance with theresult of the analysis in S33, the analyzer 22 notifies the emulationtype of the print job JD to the second core. The processes of S36, S37and S38 performed by the first core 20 are examples of the parameternotification process.

In S41, the analyzer 22 notifies the start of the RIP process to thesecond core 21. As the start of the RIP process is notified to thesecond core 21 in S41, the second core 21 starts the RIP process for thebody area B that starts with the command specified by the read pointernotified in S37. In the present embodiment, by duplicating the print jobJD on the memory 14, the second core 21 performs the RIP process on theduplicated print job JD. The duplicated print job JD is configured withthe header area H, the body area B, and the footer area F, similar tothe original print job JD, and the arrangement of the PJL and PDLcommands is also the same as that of the original print job JD.Therefore, when the read pointer is a relative address with the originat the beginning of the print job JD and the value of the read pointeris the same, the command specified by the read pointer indicates thesame command in the original print job JD and in the duplicated printjob JD. The process executed in S41 by the first core 20 is an exampleof a start notification process.

Next, referring to FIG. 5, a process performed by the second core 21will be described. In S50, the second core 21 determines whether thenotification is received from the first core 20. When it is determinedthat the notification has not been received from the first core 20 (S50:NO), the second core 21 waits (i.e., repeats S50). In the presentembodiment, the operation mode of the second core 21 shifts to the sleepmode when no instruction is received from the first core 20 (S50: NO)for a particular time period, and the sleep mode is maintained until thesecond core 21 receives the notification from the first core 20. When itis determined that the notification is received from the first core 20(S50: YES), the second core 21 proceeds to SM. When proceeding to SM,the current operation mode of the second core 21 is the sleep mode, theoperation mode shifts to the operating mode, while, when the operationmode of the second core 21 has already shifted to the operating mode,the operating mode is maintained. In the present embodiment, the secondcore 21 determines whether the second core 21 has to be recovered fromthe sleep mode in S50. Alternatively or optionally, for example, thefirst core 20 may be configured to determine whether or not the secondcore 21 should be restored from the sleep mode, and when the second core21 is determined to be restored, the first core may shift the operationmode of the second core 21 from the sleep mode to the operating mode thefirst core 20 before transmitting a notification to the second core 21in S50.

Then, the second core 21 proceeds to S52 to determine whether thenotification from the first core 20 is a notification of the RIPparameters. When the first core 20 has made the notification in S36(S52: YES), the second core 21 proceeds to S53. In S53, the RIPparameters constructed by the parameter constructor 24 are set asparameters to be used for the RIP process. After execution of S53, thesecond core 21 returns to S50.

When a negative decision is made in S52, the second core 21 proceeds toS54 to determine whether the notification from the first core 20contains the value of the read pointer. When the first core 20 has madethe notification in S37, the second core 21 makes the affirmativedecision (S54: YES) and proceeds to S55. In S55, the second core 21 setsthe value of the read pointer notified by the first core 20 as the valueindicating the top command of the body area B. After completing S55, thesecond core 21 returns to S50.

When a negative decision is made in S54, the second core 21 proceeds toS56 to determine whether the notification from the first core 20contains a notification of the emulation type. When the first core 20has made the notification in S38, the second core 21 makes anaffirmative decision (S56: YES), and proceeded to S57. In S57, thesecond core 21 sets the emulation type notified by the first core 20 tothe emulation type of the print job JD. After completing S57, the secondcore 21 returns to S50.

When the negative decision is made in S56, the second core 21 proceedsto S58 to determine whether the notification from the first core 20 is anotification indicating the start of the auto-emulation. It is notedthat the auto-emulation is a process to make the second core 21determine the emulation type when the emulation type cannot bedetermined by the first core 20. The first core 20 notifies the start ofthe auto-emulation in S40 of FIG. 4, described later. When the negativedecision is made in S58, the second core 21 proceeds to S62. A casewhere the negative decision is made in S58 will be described later.

In S62, the second core 21 determines whether the notification from thefirst core 20 is a notification of the start of the RIP process. Whenthe notification from the first core 20 is not the notification of thestart of the RIP process (S62: NO), the second core 21 returns to S50.When the notification from the first core 20 is the notification of thestart of the RIP process (S62: YES), the second core 21 proceeds to S63and performs the RIP process. In the present embodiment, as the secondcore 21 performs the RIP process, the analyzing process and the RIPprocess in the printing process can be performed by the two processorcores in a distributed manner, the processing load on the processorcores can be reduces.

FIG. 6 shows the RIP process called in S63 of FIG. 5 in detail. In S70,the second core 21 analyzes the PDL command in the duplicated print jobJD and performs drawing to generate the raster data. At this time, thesecond core 21 performs the drawing by applying the RIP parameters thathave already been set. In the present embodiment, the raster data isdata that has three color values (i.e., values of red (R) component,green (G) component, and blue (B) component) for each pixel. The rasterdata generated by the second core 21 is recorded in the print datastorage area of the memory 14. In S71, the second core 21 updates theread pointer to a value indicating the next PDL command.

In S72, the second core 21 determines whether the raster data for onepage has been generated. When the raster data for one page has not beengenerated (S72: NO), the second core 21 goes to S75 to determine whetherthe raster data for all the pages in the print job JD has beengenerated. When the raster data for all the pages in the print job JDhas not been generated (S75: NO), the second core 21 returns to S70.

After repeatedly performing the processes of S70 and S71, when thesecond core 21 determines that the raster data for one page has beengenerated (S72: YES), the second core 21 proceeds to S73. In S73, thesecond core 21 causes the job manager 23 to register the generatedraster data for one page as the raster data to be printed. In S74, thesecond core 21 performs a completion notification to notify the jobmanager 23 that the raster data for one page has been generated.

In S75, the second core 21 determines whether the raster datacorresponding to all the pages in the print job JD has been generated.When the raster data corresponding to all the pages in the print job JDhas not been generated (S75: NO), the second core 21 returns to S70 andgenerates the raster data corresponding to the remaining pages. Afterrepeatedly performing the processes from S70 to S74, when the secondcore 21 determines that the raster data for all the pages in the printjob JD has been generated (S75: YES), the second core 21 proceeds to S76and notifies the job completion notification indicating that the RIPprocess for one print job JD has been completed (S76). Then, the secondcore 21 proceeds to S64.

Returning to FIG. 5, the second core 21 notifies the value of the readpointer when the RIP process in S63 has been completed, that is, thevalue indicating the top command of the footer area F, to the first core20 in S64. In S65, the second core 21 notifies a completion notificationof the RIP process to the job manager 23 of the first core 20.

Returning to FIG. 4, in the present embodiment, the analyzer 22 of thefirst core 20 analyzes page information from the body area B in theprint job JD in S42 in a period during which the processes shown in FIG.5 are performed by the second core 21. The page information isinformation that specifies the PDL data corresponding to one page on thebody area B. Concretely, the page information is information specifyingfrom which byte to which byte corresponds to the PDL data for one page,and from which byte to which byte corresponds to the PDL data for twopages in the body area B.

In S43, the analyzer 22 determines whether the read pointer has beenreturned by the second core 21. When the read pointer is returned by thesecond core 21 (i.e., when the process in S64 is performed) (S43: YES),the analyzer 22 proceeds to S44. When the negative decision is made inS43, the analyzer 22 pauses. In S44, the analyzer 22 updates the currentvalue of the read pointer to the value of the read pointer returned fromthe second core 21.

Returning to S32, the analyzer 22 determines whether the command at theend of the print job JD has been detected. When the analyzer 22 proceedsto S32 via S44, the read pointer indicates the top command of the footerarea F in the print job JD. By making the negative decision in S32 andrepeating S33, S34 and S35, the analyzer 22 detects the command “EC%-12345” at the end of the footer area F based on the analysis in S33.Then, the analyzer 22 made the affirmative decision (S32: YES) andproceeds to S12 in FIG. 3.

In S12, the analyzer 22 notifies the job information among the analysisresults in S11 to the job manager 23. In S13, the analyzer 22 notifiesthe job manager 23 of the start of the printing process. Ins S14, thejob manager 23 determines whether the start notification has beenreceived. When the job manager 23 receives the start notification fromthe analyzer 22 in (S14: YES), the analyzer 22 proceeds to S15. In S15,the analyzer 22 notifies the job information received from the analyzer22 to the print controller 25. For example, the job manager 23 can, withuse of the received page information, manage the raster data for eachpage stored in the memory 14, and generate an indicator image to show adegree of progress of the printing process. When the job manager 23 doesnot receive the start notification (S14: NO), the analyzer 2 pauses.

In S16, the job manager 23 determines whether a page completionnotification is received from the second core 21. When receiving thepage completion notification (S74 in FIG. 6) indicating that the rasterdata for one page has been generated from the second core 21 (S16: YES),the job management section 23 proceeds to S17 and makes a print startnotification to the print controller 25 to print the raster data for onepage. When receiving the print start notification from the job manager23, in S24, the print controller 25 converts the raster data for onepage stored in the print data storage area into data that can beprocessed by the print engine 17 and causes the print engine 17 toperform the printing process.

Concretely, in S24, the print controller 25 performs a color conversionprocess of converting the value of each color R, G, and B of the eachpixel of the raster data to values corresponding to the recording agent.Further, the print controller 25 converts the data after the colorconversion process into binary data that can be processed by the printengine 17. The print controller 25 causes the print engine 17 to performprinting for one page using the binarized data. The job manager 23transmits a print start notification to the print controller 25 everytime the job manager 23 receives a page completion notification from thesecond core 21.

When receiving the job completion notification (S76 in FIG. 6) from thesecond core 21 in S18, the job manager 23 proceeds to S19 and sends thejob completion notification to the print controller 25. Thus, the printcontroller 25 terminates the process in S24.

Next, a process when the analyzer 22 cannot determine the type of thejob control command and therefore cannot determine the emulation type inS31 of FIG. 4 is described. When the analyzer 22 cannot determine thetype of the job control command (S31: NO), the analyzer 22 proceeds toS39 and the current read pointer value is notified to the second core21. In S40, the analyzer 22 notifies the start of the auto emulation tothe second core 21. As described above, the “auto emulation” is aprocess to cause the second core 21 to analyze the emulation type.

When the second core 21 receives the start notification of theauto-emulation by the first core 20 in S40, the second core 21 makenegative decision in S52, S54 and S56 and proceeds to S59 to execute theauto-emulation in FIG. 5. As a result, the emulation type is determinedaccording to the analysis result of the body area B in the duplicatedprint job JD. In the example of FIG. 2, the second core 21 determinesthat the emulation type is “PCL XL” from the command “PCL XL” containedin the body area B.

In S60, the second core 21 sends a request to obtain the RIP parametersto the first core 20 according to the emulation type determined by theauto-emulation in S59. In this case also, when receiving a request forobtaining the RIP parameters from the second core 21 in S20 of FIG. 3,the parameter constructor 24 constructs the RIP parameters according tothe emulation type identified by auto-emulation, and notifies theconstructed RIP parameters to the second core 21 (S21-S23).

When the second core 21 obtains the RIP parameters notified by the firstcore 20 (S61: YES), the second core 21 returns to S50.

When the second core 21 receives the start notification of the RIPprocess by the first core 20 in S41 (S52: NO; S54: NO; S56: NO; S58: NO;S62: YES), the second core 21 proceeds to S63 to start the RIP process.

According to the above-described embodiment, the following effects canbe achieved.

The first controller 11 has the first core 20 configured to perform theanalyzing process to analyze the job control commands included in theprint job JD, and the second core 21 configured to perform the RIPprocess to generate the raster data from the PDL commands, when theprinting process is being performed. Such a configuration allowsdifferent processor cores to perform the analysis of the job controlcommand and the process of generating the raster data from the PDLcommand, in the printing process. Therefore, the processing load can bedistributed between the two processor cores to suppress any negativeimpact, from the processing load, on the output of the printing process.

The first core 20 is configured to notify the second core 21 of eachparameter according to the analysis result of the print job JD beforenotifying the second core 21 to start the RIP process. In the RIPprocess, the second core 21 generates the raster data from the PDLcommand according to each parameter. As a result, even in aconfiguration in which the parameters used to perform the RIP processare analyzed from the print job JD, the analyzing process and the RIPprocess can be distributed and performed by the two cores.

The first core 20 is configured to identify the emulation type based onthe job control command, and the first core 20 is configured to notifythe second core 21 of the parameters according to the identifiedemulation type as the RIP parameters. The second core 21 is configuredto generate the raster data from the PDL command according to the RIPparameters. As a result, even when analyzing the RIP parameters used forthe RIP process from the print job JD, the analyzing process and the RIPprocess can be distributed and performed by the two cores.

When the emulation type of the print job JD is not identified based onthe job control command, the first core 20 causes the second core 21 toperform the auto-emulation to identify the emulation type. The firstcore 20 is configured to inform the second core 21 of the RIP parameterscorresponding to the emulation type identified by the second core 21.Accordingly, even when the drawing type of the print job JD cannot beidentified by the first core 20, the RIP process by the second core 21can be kept to continue.

The first controller 11 is configured to store the print job JD in thememory 14 that can be referenced by each of the first core 20 and thesecond core 21. After performing the analyzing process, the first core20 is configured to notify the PDL command specified by the read pointerto the second core 21. The second core 21 is configured to start the RIPprocess by referring to the value of the read pointer notified by thefirst core 20. As a result, the first core 20 and the second core 21 canrefer to the print job JD stored in the memory 14 and perform theanalyzing process and the RIP process. As a result, compared with a casewhere the print job JD is stored in separate memories 14, the memoryresources can be effectively utilized.

When the print job JD corresponds to a plurality of pages, the firstcore 20 sequentially performs analysis on the plurality of pages of theprint job JD and stores the analysis results in the memory 14. The firstcore 20 informs the second core 21 of each of the stored parameters forthe plurality of pages. As a result, the analyzing process by the firstcore 20 and the RIP process by the second core 21 can be performed inparallel, thereby improving the process speed in the printing processcompared to a case where the analyzing process and the RIP process areperformed alternately.

The second core 21 is a processor core configured to perform only theRIP process. Since the RIP process, which has a high processing load, isperformed by the second core 21, which is a dedicated processor core,thereby suppressing adverse effects on other processes performed by thefirst core 20.

The first controller 11 shifts the operation mode of the second corefrom the operating mode to the sleep mode when the second core 21 doesnot perform the RIP process. The operating mode is a mode in which thesecond core 21 can perform the RIP process, and the sleep mode is a modein which the power consumption is lower than the operating mode.According to this configuration, since the operation mode of the secondcore 21 shifts from the operating mode to the sleep mode in the periodwhen the RIP process is not performed by the second core 21, the powerconsumption of the first controller 11, which includes both the firstcore 20 and the second core 21, can be reduced.

Modification of First Embodiment

In the first embodiment, when the emulation type cannot be identified,the first controller 11 causes the second core 21 to perform theauto-emulation to identify the emulation type (FIG. 4: S40).

Alternatively, the first controller 11 may be configured to notify thesecond core 21 of RIP parameters corresponding to a particular emulationtype when the emulation type cannot be identified. In such a case, whenthe RIP parameters are notified in S36 of FIG. 3, if the emulation typehas not been identified, the first controller 11 may be configured tonotify the RIP parameters corresponding to the “PostScript” to thesecond core 21. Similarly, if the emulation type has not beenidentified, the first controller 11 may notify “PostScript” as theemulation type in S38. In such a configuration, the processes of S31,S39 and S40 in FIG. 4 and the processes of S58 to S61 in FIG. 5 may bedeleted, and when it is determined that the notification of theemulation type is not received (S56: NO), the second core 21 may proceedto S62.

In the embodiment described above, when the emulation type is notidentified based on the job control command, the first core 20 isconfigured to notify the second core 21 of the RIP parameterscorresponding to a particular emulation type. According to thisconfiguration, the second core 21 can continue the RIP process even whenthe emulation type cannot be identified by the job control command.

Second Embodiment

In the second embodiment, a configuration different from that of thefirst embodiment will be mainly described. In the description of thesecond embodiment, the same reference numerals are assigned for the sameportions as in the first embodiment, and the description thereof willnot be repeated.

In the present embodiment, when the printing apparatus 10 continuouslyreceives multiple print jobs JD from the terminal 30, during theperforming of the RIP process by the second core 21, the first core 20analyzes the PJL command for the print job which is being receivedsubsequently. FIG. 7 is a flowchart illustrating a job analyzing process2 which is performed by the analyzer 22 of the first core 20 in S11according to the second embodiment.

In S31, when the type of the job control command is the PJL, theanalyzer 22 proceed to S80 to determine whether a prefetching processhas already been performed. The prefetching processing will be describedlater.

When it is determined that the prefetching process has not beenperformed (S80: NO), the analyzer 22 proceeds to S32. In S32, when it isdetermined that the command at the end of the print job JD has not beendetected (S32: NO), the analyzer 22 proceeds to S33 and then S81. InS81, the analyzer 22 updates the first pointer among the read pointers.

In the second embodiment, two pointers, i.e., the first pointer and thesecond pointer, are used as the read pointers. The first pointer is usedto designate the command to be analyzed by the analyzer 22. The secondpointer is used to designate a top command of the commands analyzed inthe prefetching process. The steps from S35 to S42 are the same as thosein the first embodiment (see FIG. 4).

In S83, the analyzer 22 performs the prefetching process. Theprefetching process is a process in which the analyzer 22 analyzes thePJL command for the print job JD received next to the print job JD forwhich RIP processing is currently being performed. As the prefetchingprocess is performed, the RIP process by the second core 21 and theanalysis of the PLJ command for the subsequently received print job JDby the first core 20 are performed in parallel.

FIG. 8 is a flowchart illustrating a prefetching process called in S83of FIG. 7. In S90, the analyzer 22 determines whether a new print job JDis received separately from the print job JD subjected to the currentprinting process. When the new print job JD is not received (S90: NO),analyzer 22 terminates the prefetching process and proceeds to S43 ofFIG. 7. On the other hand, when it is determined that the new print jobJD is received (S90: YES), the analyzer 22 analyzes the PJL command forthe newly received print job JD. In the following description, the newlyreceived print job JD is also referred to as the next print job JD. WhenS91 is firstly executed, the analyzer 22 firstly analyzes the PJLcommand at the beginning of the header area H in the next print job JD.In S92, the analyzer 22 updates the value of the second pointer to thevalue indicating the next command in the header area H.

In S93, the analyzer 22 determines whether the end of the header area H(i.e., @PJL ENTER LANGUAGE=PCLXL) in the next print job JD is detected.When the analyzer 22 has not detected the end of the header area H inthe next print job JD (S93: NO), the analyzer 22 returns to S91 toanalyze the PJL command indicated by the second pointer. Afterrepeatedly executing S91 and S92, when the analyzer 22 detects the endof the header area H (S93: YES), the analyzer 22 proceeds to S94. InS94, the analyzer 22 updates the RIP parameters and emulation type tothe print parameters and emulation type for the next print job JDaccording to the analysis result of S91. Then, the analyzer 22 proceedsto S43 of FIG. 8.

In S43, the analyzer 22 determines whether the second core 21 hasreturned the read pointer in response to termination of the RIP process.When the analyzer 22 has not received the read pointer from the secondcore 21 (S43: NO), the analyzer 22 pauses. On the other hand, when theanalyzer 22 has received the read pointer from the second core 21 (S43:YES), the analyzer 22 proceeds to S84 and updates the value of the firstpointer to the value of the read pointer replied by the second core 21.Then, the analyzer 22 returns to S32. When the data end of the print jobJD, i.e., the command of “EC %-12345X” has not been detected (S32: NO),the analyzer 22 proceeds to S33 to analyze the PJL command, and then,S81 to update the first pointer. When the analyzer 22 has not detectedthe enter language (S35: NO), the analyzer 22 returns to S32. When theend of the print job JD is detected (S32: YES), the analyzer 22terminates the job analyzing process shown in FIG. 7.

Next, the job analyzing process 2 for a newly received print job JDwhich is performed after the prefetching process in S83 has already beenperformed will be described. When the type of the control command isdetermined to be the PJL (S31: YES), the analyzer 22 proceeds to S80 todetermine whether the prefetching process has already been performed.When prefetching process has already been performed (S80: YES), theanalyzer 22 proceeds to S85 to notify the second core 21 of the value ofthe second pointer. As described above, the value of the second pointerhas been updated, in the previously performed prefetching process, toindicate the command at the beginning of the body area B in the printjob JD subjected to the current printing process.

After execution of S85, the analyzer 22 proceeds to S36 to notify theRIP parameters, and then, to S38 to notify the emulation type. Eachparameter notified in S36 and S38 is the parameter updated in S94 in theprefetching process in the previous process. In S41, the analyzer 22notifies the second core 21 of the start of the RIP process.Accordingly, when the analysis of the PJL command has been completed inthe prefetching process in S83 in the previous print process, theanalyzer 22 causes the second core 21 to start the RIP process withoutanalyzing the header area H for the print job JD subjected to the printprocess in the current print process.

After execution of S42, the analyzer 22 performs the prefetching processfor the next print job JD in S83. Then, after execution of S43 and S84,when the command at the end of the print job JD is detected in S32, thejob analyzing process 2 shown in FIG. 7 is terminated.

In the second embodiment described above, when the first core 20 of thefirst controller 11 has received multiple print jobs JD from theterminal 30, the first core 20 sequentially analyzes each of themultiple print jobs JD and stores the analysis results in the memory 14.Then, the first core 20 notifies each of the parameters in the multipleprint jobs JD to the second core 21 in the parameter notificationprocess. Accordingly, when multiple print jobs JD are received from theterminal 30, the first core 20 can improve the processing speed in theprinting process compared to a case where the analyzing process and theRIP process are performed alternately.

Other Embodiments

The technology disclosed herein is not necessarily limited to theabove-mentioned embodiments, but can be modified into various forms tothe extent that the modifications do not deviate from aspects of thepresent disclosures. For example, the following modifications arepossible. It is only necessary that the first controller 11 has aprocessor core that performs the analyzing process and a processor corethat performs the RIP process, separately. In this regard, the firstcontroller 11 may have three or more processor cores.

The memory in which the print job JD is stored may be an external memorythat can be detachably connected to the printing apparatus 10, inaddition to or in place of the memory provided inside the printingapparatus 10. For example, a USB or flash memory may be used as theexternal memory. In such a case, the first core 20 and the second core21 may be configured to refer to the print job JD stored in the externalmemory.

The print job JD that is referenced by the first core 20 to analyze thePJL command and the print job JD that is referenced by the second core21 to analyze the PDL command may be stored in separate memories. Insuch a case, it is only necessary for the first controller 11 to haveseparate memories including a memory referenced by the first core 20 andanother memory referenced by the second core 21.

Shifting the operation mode of the second core 21 to sleep mode duringthe period when the second core 21 is not performing the RIP processingis only an example, and the second core 21 may remain in the operatingmode without shifting to sleep mode during the period when the secondcore 21 is not performing the RIP processing.

It is only necessary for the printing apparatus 10 to have the firstcontroller 11 provided with the first core 20 and the second core 21.Therefore, the printing apparatus 10 may be equipped with a singlecontroller having functions of the first through third controllers11-13.

The printing apparatus may be an MFP (multi-function peripheral). Insuch a case, the MFP is equipped with a scanner engine and a facsimileengine. The scanner engine is configured to perform scanning operationsto read images recorded on a document and generate image datarepresenting the scanned image, and the facsimile engine is configuredto perform a facsimile operation to transmit and receive image data in amethod compliant with the facsimile protocol.

What is claimed is:
 1. A printing apparatus, comprising: a print engine;and a controller, wherein the controller is configured to generateraster data based on a print job and control the print engine to performprinting based on the generated raster data, the print job being datacontaining a job control command and a PDL command, the job controlcommand being a command to control the print job, a PDL command being acommand to generate the raster data, wherein the controller comprises: afirst core which is a processor core configured to perform, in theprinting, an analyzing process, the analyzing process being a process toanalyzing the job control command contained in the print job; and asecond core which is another processor core configured to perform a RIPprocess, the RIP process being a process of generating the raster databased on the PDL command.
 2. The printing apparatus according to claim1, wherein the first core is configured to: perform the analyzingprocess of analyzing the job control command included in the print jobwhen the first core obtains the print job; and after performing theanalyzing process, perform a start notification process when the PDLcommand included in the print job is detected in the analyzing process,the start notification process being a process of notifying the secondcore of a start of the RIP process for the detected PDL command, andwherein the second core starts the RIP process when receiving anotification by the start notification process.
 3. The printingapparatus according to claim 2, wherein the first core performs aparameter notification process of notifying a parameter, the parameterbeing a parameter obtained by the print job by the analyzing process,the parameter being a parameter to be used when the second core performsthe RIP process and wherein the second core generates the raster datafrom the PDL command according to the parameter in the RIP process. 4.The printing apparatus according to claim 3, wherein the parameterincludes a RIP parameter, wherein the first core is configured toidentify a type of the print job based on the job control command in theanalyzing process, and wherein the parameter notification processincludes notifying the second core of the RIP parameter according to atype of the identified print job, and wherein the second core isconfigured to generate the raster data from the PDL command inaccordance with the RIP parameter in the RIP process.
 5. The printingapparatus according to claim 4, wherein, when the first core does notidentify the type of the print job based on the job control command inthe analysis process, the first core causes the second core to identifythe type of the print job based on the PDL command, and wherein, afterthe type of the print job is identified by the second core, in theparameter notification process, the first core notifies the second coreof the RIP parameter according to the type of the print job identifiedby the second core.
 6. The printing apparatus according to claim 4,Wherein, when the first core does not identify the type of the print jobbased on the job control command in the analysis process, in theparameter notification process, the first core notifies the second coreof the RIP parameter according to the print job of a particular type. 7.The printing apparatus according to claim 3, wherein the controller isconfigured to store the print job in a memory, the print job beingreferable by the first core and the second core, wherein the parameternotification process performed by the first core includes notifying thesecond core of a position of the detected PDL command in the memory, andwherein the second core generates, in the RIP process, the raster databy referring to the PDL command stored at the position in the memorynotified in the parameter notification process.
 8. The printingapparatus according to claim 3, wherein, when the print job correspondsto page images of multiple pages, the first core is configured to:analyze the multiple pages of the print job by the analysis process; andnotify the second core of each of the parameters of the multiple pagesin the parameter notification process.
 9. The printing apparatusaccording to claim 3, wherein, when the first core has obtained multipleprint jobs, the first core is configured to: sequentially analyze eachof the multiple print jobs in the analysis process; and notify thesecond core of each of the parameters in the multiple print jobs in theparameter notification process.
 10. The printing apparatus according toclaim 1, wherein the controller includes a first controller and a secondcontroller, the first controller including the first core and the secondcore, the second controller performing processes other than theanalyzing process and the RIP process.
 11. The printing apparatusaccording to claim 1, wherein the second core is a processor coreconfigured to perform only the RIP process.
 12. The printing apparatusaccording to claim 1, Wherein, when the RIP process is not performed bythe second core, the controller causes the second core to shift a modeof the second core from an operating mode to a sleep mode, the operatingmode being a mode in which the RIP process can be performed, the sleepmode being a mode in which power consumption is lower than powerconsumption in the operating mode.